import random
import sqlite3



def create_tables():
    """
    创建表
    :return:
    """
    conn = get_conn()
    create_grade = "create table grade(grade_no int ,grade_name varchar );"
    create_class = "create table class(class_no int ,class_name varchar,grade_no int );"
    create_student = "create table student(student_no int,student_name varchar ,student_sex varchar ,class_no varchar );"
    create_course = "create table course(course_no int ,course_name varchar );"
    create_student_course = "create table student_course(student_no int ,course_no int ,score varchar );"

    cursor = conn.cursor()
    cursor.execute(create_grade)
    cursor.execute(create_class)
    cursor.execute(create_student)
    cursor.execute(create_course)
    cursor.execute(create_student_course)
    conn.commit()
    conn.close()


def init_data():
    """
    初始化数据
    :return:
    """
    # 初始化年级
    stu_no = 1
    class_no = 1
    course_no = 1
    conn = get_conn()
    cursor = conn.cursor()
    for i in range(1, 4):
        insert_sql = "insert into grade values({},{})".format(i, "'" + number_to_word(i) + "年级'")
        cursor.execute(insert_sql)
    conn.commit()

    student_data = dict()
    student_data["11"] = ['王生安', '李鑫灏', '薛佛世', '蔡壮保', '钱勤堃', '潘恩依', '陈国柏', '魏皑虎', '周卓浩', '汤辟邦', '张顺谷', '张悌斯', '张灶冲',
                          '易江维', '孙来笙', '饶展林']
    student_data["12"] = ['岳列洋', '时党舒', '周迟蒲', '廉梦容', '张淮森', '夏劲釜', '王好隐', '刘昼星', '池荣弈', '邹包幼', '王施峪', '武慎萌', '范千皋',
                          '潘佩焱', '周逸依', '齐寒昇', '邱栾树', '卢钦钧', '文壮翔', '蔡沐壮', '唐盎正', '王腾振', '蔡容富']
    student_data["13"] = ['宁雨御', '朱付流', '陆丛枫', '汤丞昱', '萧百徽', '田稻善', '莫立恩', '戚渊苏', '郭磊留', '邱靖祈', '刘鲜发', '李彩早', '卓互知',
                          '岳繁粟', '莫两敬', '贺易', '岑贝澄', '陶臣杜', '卫惇琰', '王赫颢', '何刚名', '梁澄静']
    student_data["14"] = ['宁雨御', '朱付流', '陆丛枫', '汤丞昱', '萧百徽', '田稻善', '莫立恩', '戚渊苏', '郭磊留', '邱靖祈', '刘鲜发', '李彩早', '卓互知',
                          '岳繁粟', '莫两敬', '贺易', '岑贝澄', '陶臣杜', '卫惇琰', '王赫颢', '何刚名', '梁澄静']
    student_data["15"] = ['宁雨御', '朱付流', '陆丛枫', '汤丞昱', '萧百徽', '田稻善', '莫立恩', '戚渊苏', '郭磊留', '邱靖祈', '刘鲜发', '李彩早', '卓互知',
                          '岳繁粟', '莫两敬', '贺易', '岑贝澄', '陶臣杜', '卫惇琰', '王赫颢', '何刚名', '梁澄静']
    student_data["21"] = ['王生安', '李鑫灏', '薛佛世', '蔡壮保', '钱勤堃', '潘恩依', '陈国柏', '魏皑虎', '周卓浩', '汤辟邦', '张顺谷', '张悌斯', '张灶冲',
                          '易江维', '孙来笙', '饶展林']
    student_data["22"] = ['王生安', '李鑫灏', '薛佛世', '蔡壮保', '钱勤堃', '潘恩依', '陈国柏', '魏皑虎', '周卓浩', '汤辟邦', '张顺谷', '张悌斯', '张灶冲',
                          '易江维', '孙来笙', '饶展林']
    student_data["23"] = ['王生安', '李鑫灏', '薛佛世', '蔡壮保', '钱勤堃', '潘恩依', '陈国柏', '魏皑虎', '周卓浩', '汤辟邦', '张顺谷', '张悌斯', '张灶冲',
                          '易江维', '孙来笙', '饶展林']
    student_data["24"] = ['王生安', '李鑫灏', '薛佛世', '蔡壮保', '钱勤堃', '潘恩依', '陈国柏', '魏皑虎', '周卓浩', '汤辟邦', '张顺谷', '张悌斯', '张灶冲',
                          '易江维', '孙来笙', '饶展林']
    student_data["25"] = ['王生安', '李鑫灏', '薛佛世', '蔡壮保', '钱勤堃', '潘恩依', '陈国柏', '魏皑虎', '周卓浩', '汤辟邦', '张顺谷', '张悌斯', '张灶冲',
                          '易江维', '孙来笙', '饶展林']
    student_data["31"] = ['王生安', '李鑫灏', '薛佛世', '蔡壮保', '钱勤堃', '潘恩依', '陈国柏', '魏皑虎', '周卓浩', '汤辟邦', '张顺谷', '张悌斯', '张灶冲',
                          '易江维', '孙来笙', '饶展林']
    student_data["32"] = ['王生安', '李鑫灏', '薛佛世', '蔡壮保', '钱勤堃', '潘恩依', '陈国柏', '魏皑虎', '周卓浩', '汤辟邦', '张顺谷', '张悌斯', '张灶冲',
                          '易江维', '孙来笙', '饶展林']
    student_data["33"] = ['王生安', '李鑫灏', '薛佛世', '蔡壮保', '钱勤堃', '潘恩依', '陈国柏', '魏皑虎', '周卓浩', '汤辟邦', '张顺谷', '张悌斯', '张灶冲',
                          '易江维', '孙来笙', '饶展林']
    student_data["34"] = ['王生安', '李鑫灏', '薛佛世', '蔡壮保', '钱勤堃', '潘恩依', '陈国柏', '魏皑虎', '周卓浩', '汤辟邦', '张顺谷', '张悌斯', '张灶冲',
                          '易江维', '孙来笙', '饶展林']
    student_data["35"] = ['王生安', '李鑫灏', '薛佛世', '蔡壮保', '钱勤堃', '潘恩依', '陈国柏', '魏皑虎', '周卓浩', '汤辟邦', '张顺谷', '张悌斯', '张灶冲',
                          '易江维', '孙来笙', '饶展林']

    # 初始化班级和学生
    for i in range(1, 4):
        for j in range(1, 6):
            insert_class_sql = "insert into class values ({},{},{})" \
                .format(class_no, "'" + number_to_word(i) + "年" + number_to_word(j) + "班'", i)
            stu_lst = student_data[str(i) + str(j)]
            for k in range(0, len(stu_lst)):
                insert_stu_sql = "insert into student values ({},{},{},{})" \
                    .format(stu_no, "'" + str(stu_lst[k]) + "'", random.randint(0, 1), class_no)
                stu_no += 1
                # print(insert_stu_sql)
                cursor.execute(insert_stu_sql)
            # print(insert_class_sql)
            cursor.execute(insert_class_sql)
            class_no += 1

    # 初始化课程数据
    courses = "线性代数、高等数学、统计学、英语、历史、计算机基础、Python、人工智能基础、机器学习、深度学习、自然语言处理、数据分析"
    course_list = courses.split("、")
    for i in range(0, len(course_list)):
        insert_course_sql = "insert into course values ({},{})".format(i + 1, "'" + course_list[i] + "'")
        print(insert_course_sql)
        cursor.execute(insert_course_sql)
        course_no += 1

    # 初始化选课
    for i in range(0,stu_no):
        for j in  range(0,4):
            insert_stu_course_sql = "insert into student_course values ({},{},{})".format(i+1,random.randint(1,course_no),random.randint(0,100))
            cursor.execute(insert_stu_course_sql)
    conn.commit()
    conn.close()


def number_to_word(num):
    """
    数字转汉字
    :param num:
    :return:
    """
    word_list = "零一二三四五六七八九十"
    return word_list[num]


def get_conn():
    return sqlite3.connect("schools.db")


if __name__ == "__main__":
    create_tables()
    init_data()